#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Software: PyCharm
# @Version : Python-
# @Author  : Shengji He
# @Email   : hsjbit@163.com
# @File    : UniqueNumberOccurrences.py
# @Time    : 2020/10/28 16:50
# @Description:
from typing import List
from collections import Counter


class Solution:
    def uniqueOccurrences(self, arr: List[int]) -> bool:
        """
        Given an array of integers arr, write a function that returns true if and only if the number of
        occurrences of each value in the array is unique.

        Example 1:
            Input: arr = [1,2,2,1,1,3]
            Output: true
            Explanation: The value 1 has 3 occurrences, 2 has 2 and 3 has 1. No two values have the same number
            of occurrences.
        Example 2:
            Input: arr = [1,2]
            Output: false
        Example 3:
            Input: arr = [-3,0,1,-3,1,1,1,-3,10,0]
            Output: true

        Constraints:
            - 1 <= arr.length <= 1000
            - -1000 <= arr[i] <= 1000

        :param arr:
        :return:
        """
        cnt = Counter(arr)
        return len(cnt.values()) == len(set(cnt.values()))


if __name__ == '__main__':
    S = Solution()
    # arr = [1, 2, 2, 1, 1, 3]
    # arr = [1, 2]
    arr = [-3, 0, 1, -3, 1, 1, 1, -3, 10, 0]
    print(S.uniqueOccurrences(arr))
    print('done')
